The present invention relates to the field of computer graphics, and in particular to methods and apparatus for creating, modifying, and using components to create computer graphics productions. Many computer graphic images are created by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. Animated sequences can be created by rendering a sequence of images of a scene as the scene is gradually changed over time. A great deal of effort has been devoted to making realistic looking and artistically compelling rendered images and animations.
Computer graphics images, animations, and other productions involving computer graphics, such as interactive entertainment software, are created from a number of different components. Generally, components include any data and instructions used to create products and applications that include computer graphics. Components can include three-dimensional models of geometry; texture maps, other arrays of data, lighting, and shading programs used to determine the visual appearance of models; and animation data and deformer functions used to specify changes and motion over time.
Digital production pipelines include modeling, shading, articulation, animation, simulation, layout, lighting, and rendering. Modeling is the creation of the three-dimensional geometry of characters, sets, props, and other objects. Shading is the specification of optical attributes of the surface and interior of objects. Articulation is the specification of joints and other moveable elements of objects. Animation specifies the motion of objects over time in one or more scenes, often with reference to the objects' articulation. Simulation specifies the motion, appearance, and/or behavior of objects. Layout specifies the arrangement of objects and cameras in one or more scenes. Lighting defines the location and other attributes of light in one or more scenes. Rendering produces images or animation from the components.
Users at each stage of the digital production pipeline create or modify numerous components to be used in creating a computer graphics image, animation, or other type of production using one or more software application tools. Components are typically combined during rendering to produce an animated sequence. For example, geometric models, shading programs and data, lighting, animation data, and deformers all need to be combined correctly to produce a rendered image or scene.
Often, components have complex relationships. For example, the geometry of a model may be defined as a mesh of connected points. Deformer components define the movement and deformation of these connected points. The effect of a deformer component may vary at different points of a mesh. To implement this, the points of a mesh are assigned different weight values. Each point's weight modulates or changes the effect of a deformer component on its respective point. The association between points and their deformer weights is an example of correlated data.
In a collaborative environment, different users may asynchronously create and/or modify correlated data. For example, a modeling user may specify mesh points, and an articulation user may specify deformer functions and deformer weights for these mesh points. In another example, a layout user may specify the placement of objects in a scene, and a lighting user may specify the influence of lights on these objects.
One problem with correlated data is that a user may change one component and inadvertently break the correlation with another component. For example, if a user modifies model geometry by adding or removing mesh points, this may cause the deformer weights previously specified to become invalid. For example, if a mesh point is deleted, a deformer weight may become assigned to a non-existent point or inadvertently associated with the wrong part of the mesh. This problem is especially acute in collaborative environments, where different users author components independently of each other and often unaware of the precise relationships between components.